package a.codetop.笔试框架.天王;

public class 岛屿 {

    static char[][] g= {
            {'1','1','1','1','0'},
            {'1','1','0','1','0'},
            {'1','1','0','0','1'},
            {'0','0','0','0','1'}
    };

    //所求
    static int count=0;

    public static void main(String[] args) {
        //找岛起点
        for (int i=0;i<g.length;i++) {
            for (int j=0;j<g[0].length;j++) {
                if(g[i][j]=='1'){
                    qian(i,j); count++;
                }
            }
        }
        System.out.println("共有 "+count+" 个岛");
    }

    static int[][] fx = {{-1,0},{1,0},{0,-1},{0,1}};

    static void qian(int i, int j) {
        pt(g);
        for (int k=0;k<fx.length;k++) {
            int x=i+fx[k][0],y=j+fx[k][1];
            //1、预判xy
            if(x<0||x>=g.length||y<0||y>=g[0].length||g[x][y]=='0' //越界+走过
            ) continue;
            //3、放心迭代xy
            g[x][y]='0';
            qian(x,y);
            //g[x][y]='1'; 不还原！
        }
    }

    //debug↓————————————————————————————————————————————————————————————————————————————————————————————————————
    public static void pt(char[][] p){
        for (int i = 0; i < p.length; i++) {
            for (int j = 0; j < p[0].length; j++) {
                System.out.print(p[i][j] + " ");
            }
            System.out.println();
        }
        System.out.println("——————————————————————————");
    }
}

